package com.tongcao.cn.service;

import com.tongcao.cn.base.req.IRequest;
import com.tongcao.cn.dfire.result.Result;

/**
 * @Author:tongcao
 * @Date:2019/1/24 16:01
 * Description:
 */
public interface IBookerClientService {


    /**
     * 统一授权执行入口
     * <p>
     * 只要实现OAuthRequest类的请求类都可以通过该方法执行
     * <pre>
     *     H5授权一般是返回URL形式, 返回String类型
     *     app client授权一般是返回继承OAuthResponse
     *     OAuthResponse是业务返回对象基类
     * </pre>
     *
     * @param request
     * @param <T>
     * @return
     */
    <T> Result<T> execute(IRequest<T> request);


    /**
     * 统一授权业务逻辑执行入口(内部逻辑对外暴露)
     * <p>
     * 只要实现OAuthRequest类的请求类都可以通过该方法执行
     * <pre>
     *     OAuthResponse是业务返回对象基类
     * </pre>
     *
     * @param request
     * @param <T>
     * @return
     */
    <T> Result<T> bizExecute(IRequest<T> request);
}
